package com.zt.java.back;

import com.sun.org.apache.xpath.internal.SourceTree;

import java.util.ArrayList;
import java.util.Stack;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

class person{
    public String name;

    @Override
    public String toString() {
        return name;
    }
}
public class Main {

//    public static void main(String[] args) {
//
//    }
//        person p = new person();
//        p.name = "a";
//        ArrayList<Float>  list = new ArrayList<>();
//        list.add(1.0f);
//        System.out.println(list.toString());
//        Float b = list.get(0);
//        b+=2;
//        System.out.println(b);
//        System.out.println(list.toString());

//        String str = "b";
//        if(str!="a" && str!="b"){
//            System.out.println("sdfdf");
//
//        }
//        BlockingQueue queue = new ArrayBlockingQueue(5);
//        queue.add(1);
//        queue.add(2);
//        queue.add(3);
//        queue.add(4);
//        queue.add(5);
//        //queue.add(6);
//        //queue.offer(6);
//        System.out.println(queue.remove());
//        System.out.println(queue.poll());
//        System.out.println(queue.poll());
//        System.out.println(queue.poll());
//        System.out.println(queue.poll());
//        System.out.println(queue.poll());
//
//        System.out.println(queue.remove(4));
//        System.out.println(queue.element());
//
//
//
//
//
//        System.out.println(queue.peek());


            public static void reverse(Stack<Integer> stack) {
                if (stack.isEmpty()) {
                    return;
                }
                int i = getAndRemoveLastElement(stack);
                reverse(stack);
                stack.push(i);
            }

            public static int getAndRemoveLastElement(Stack<Integer> stack) {
                int result = stack.pop();
                if (stack.isEmpty()) {
                    return result;
                } else {
                    int last = getAndRemoveLastElement(stack);
                    //在得到 last 后，会从当前的result逐步递归回第一个result
                    //需要执行完完整的方法，所以不是只压入一个result，压入的result的个数是stack中元素的个数减1
                    stack.push(result);
                    return last;
                }
            }

            public static void main(String[] args) {
                Stack<Integer> test = new Stack<Integer>();
                test.push(1);
                test.push(2);
                test.push(3);
                test.push(4);
                test.push(5);
                reverse(test);
                while (!test.isEmpty()) {
                    System.out.println(test.pop());
                }

            }

        }
